PART 09. 배열 (NumPy)

목차


학습 목표

📖 목차


9.1 넘파이 배열의 개요

넘파이란?

넘파이(NumPy)는 고성능 수치 계산을 위한 파이썬 라이브러리로, N차원 배열(ndarray)을 제공한다.

본 예제는 NumPy 배열을 기반으로 수치 데이터를 효율적으로 처리하는 방법을 제시한다.


import numpy as np

배열 생성

본 예제는 NumPy의 ndarray를 생성하고 인덱싱/슬라이싱으로 원소에 접근하는 방법을 보인다. NumPy 배열은 동일 자료형 기반의 연산에 최적화되어 있어, 리스트 대비 수치 연산에서 효율적이다.


arr = np.array([1, 2, 3, 4, 5])
print(arr)

인덱싱과 슬라이싱

본 예제는 해당 단원에서 다루는 핵심 개념을 코드로 확인하기 위한 예시이다. 변수의 의미를 파악한 뒤, 입력·처리·출력의 흐름을 따라 실행 결과를 해석하는 것이 중요하다.


print(arr[0])
print(arr[1:4])

2차원 배열

본 예제는 NumPy의 ndarray를 생성하고 인덱싱/슬라이싱으로 원소에 접근하는 방법을 보인다. NumPy 배열은 동일 자료형 기반의 연산에 최적화되어 있어, 리스트 대비 수치 연산에서 효율적이다.


arr2 = np.array([[1,2,3],[4,5,6]])
print(arr2[0,1])

shape과 reshape

본 예제는 NumPy의 ndarray를 생성하고 인덱싱/슬라이싱으로 원소에 접근하는 방법을 보인다. NumPy 배열은 동일 자료형 기반의 연산에 최적화되어 있어, 리스트 대비 수치 연산에서 효율적이다.


print(arr2.shape)

arr3 = np.array([1,2,3,4,5,6])
print(arr3.reshape(3,2))

배열 연산

본 예제는 NumPy의 ndarray를 생성하고 인덱싱/슬라이싱으로 원소에 접근하는 방법을 보인다. NumPy 배열은 동일 자료형 기반의 연산에 최적화되어 있어, 리스트 대비 수치 연산에서 효율적이다.


a = np.array([1,2,3])
b = np.array([4,5,6])

print(a + b)
print(a * 2)

9.2 배열의 활용

배열과 그래프

본 예제는 matplotlib의 pyplot을 이용하여 선 그래프를 그리는 절차를 담는다. x축과 y축에 대응하는 데이터 목록을 준비한 뒤 plot()으로 선을 그리며, title/label을 통해 그래프의 의미를 명확히 한다.


import matplotlib.pyplot as plt

x = np.arange(0, 10)
y = x ** 2

plt.plot(x, y)
plt.show()

x축 눈금 조절

본 예제는 matplotlib의 pyplot을 이용하여 선 그래프를 그리는 절차를 담는다. x축과 y축에 대응하는 데이터 목록을 준비한 뒤 plot()으로 선을 그리며, title/label을 통해 그래프의 의미를 명확히 한다.


year = [2006, 2009, 2012, 2015, 2018]
score = [547, 546, 554, 524, 526]

ind = np.arange(len(year))
plt.plot(ind, score)
plt.xticks(ind, year)
plt.show()

여러 개의 막대 그래프

본 예제는 범주형 데이터를 막대 그래프로 표현한다. bar()에 항목(범주)과 값 목록을 전달하여 비교를 시각화하며, 필요에 따라 legend(), xticks() 등을 통해 표기를 정돈한다.


male = [172, 173, 174, 175]
female = [160, 161, 162, 163]
ind = np.arange(4)

plt.bar(ind-0.2, male, width=0.4, label="남")
plt.bar(ind+0.2, female, width=0.4, label="여")
plt.legend()
plt.show()

누적 막대 그래프

본 예제는 범주형 데이터를 막대 그래프로 표현한다. bar()에 항목(범주)과 값 목록을 전달하여 비교를 시각화하며, 필요에 따라 legend(), xticks() 등을 통해 표기를 정돈한다.


spring = np.array([200, 220, 210])
summer = np.array([500, 480, 510])

plt.bar([0,1,2], spring)
plt.bar([0,1,2], summer, bottom=spring)
plt.show()

넘파이 함수

본 예제는 NumPy의 ndarray를 생성하고 인덱싱/슬라이싱으로 원소에 접근하는 방법을 보인다. NumPy 배열은 동일 자료형 기반의 연산에 최적화되어 있어, 리스트 대비 수치 연산에서 효율적이다.


score = np.array([70, 85, 90, 60])

print(np.mean(score))
print(np.where(score >= 80, "pass", "fail"))

9.3 [플러스 예제] 출생아 수 시각화

본 예제는 범주형 데이터를 막대 그래프로 표현한다. bar()에 항목(범주)과 값 목록을 전달하여 비교를 시각화하며, 필요에 따라 legend(), xticks() 등을 통해 표기를 정돈한다.


year = np.arange(2012, 2022)
boy = np.array([242, 239, 232, 229, 219, 206, 191, 180, 172, 167])
girl = np.array([227, 224, 219, 216, 207, 195, 180, 170, 162, 158])

ind = np.arange(len(year))

plt.bar(ind-0.2, boy, width=0.4, label="남아")
plt.bar(ind+0.2, girl, width=0.4, label="여아")
plt.xticks(ind, year)
plt.legend()
plt.show()